#!/usr/bin/env python
#-*- coding:utf-8 -*-
""" 此程序用于三线式调温白菜白光的曲线分析和电阻网络阻值选取。
    灵感来自 <http://bbs.mydigit.cn/read.php?tid=985779>
    由网友 <master0123> 写的 《白光T12三线式控温（616控制器）分析》
    
    GUI界面采用Python内置的Tkinter标准库，使用作者自己的TkinterDesigner工具自动生成界面代码。
    <https://github.com/cdhigh/tkinter-designer>
    
    外部依赖：
        bestchoices_n_v2t.pyd
    Author：
        cdhigh <https://github.com/cdhigh>
    License:
        The MIT License (MIT)
    第一版完成日期：
        2015-08-13
"""

__Version__ = '1.0'

import os, sys
if sys.version_info[0] == 2:
    from Tkinter import *
    from tkFont import Font
    from ttk import *
    #Usage:showinfo/warning/error,askquestion/okcancel/yesno/retrycancel
    from tkMessageBox import *
    #Usage:f=tkFileDialog.askopenfilename(initialdir='E:/Python')
    #import tkFileDialog
    #import tkSimpleDialog
else:  #Python 3.x
    from tkinter import *
    from tkinter.font import Font
    from tkinter.ttk import *
    from tkinter.messagebox import *
    #import tkinter.filedialog as tkFileDialog
    #import tkinter.simpledialog as tkSimpleDialog    #askstring()

from bestchoices_n_v2t import *

schData = """
    R0lGODlhIAMmAfcAAAAAAP///8opK7krLNY0NcU0NegQF9cXHLwUGOwdJOQeJOYlLLogJtcmLOQ1PFEfIVoyM/gTI9kcJvYjLtUpNNVFTbFARvro6eQUI+wc
    LOQcLeYmNMooNBIEBbwqNcw6Rak0Pe7h4uQULMe7xG1kaw0EDNzU3Pz0/Ozk7HVydaWbpvbs+GVcZxUMGJSMl9TM1+Tc57WsuTQsOFRMWB0UIyQcKUU8S+zk
    9B0ULNTM5ezk/CcmKXl4exQMJ7SsxxgXHBQMOTo5RSknSTk3V9PR9Hx7iJiXpeTj9AsKJ3t5oqyq1crJ5b281tzb9hEQWhYVdDk4a7Kx9mppicLB+ZCPtwsK
    5w8OuQwMiwkJOwQEDAkJFxwcQBQULFFRrGdoyxQUJBwcLCkpN1FRaBwcJEhIWLW126mpxltbZ2pqd4qKl2RkbdnZ7Lm5x8jI1+zs/Kqqtjk5PNra5NTU3JSU
    mvT0/Ozs9OTk7FhYWsTEx4eHibi4uaioqScpjRcYNnh636Ol+qGj6VlaeKGizqChvePk/NHW/AwUNURFSay115ufrAwUJqy0xczU5hQcLDxBSuTt/BwkMNzk
    7hQcJOTs9Oz0+Sw1Omx1eqy0uMzU2AsUGExUV7zExwQMDGRsbIyUlNTc3PT8/OTs7BomHAQMBNTc1PT89Oz07OTs5GNkYyo0KWRsY2x0agwUCKy0p97k2OPk
    4tTYyMPEufPzfPz7h42Ngk1NSTc3NO3t4/z89J+fmvz5mOnmmvv60fXvkfz4q4F8ROvkiEVEOd3c0dvSfJqUYdjSlOjjtQ0MBHtxKsa8dq+smJeKPbaoVlhW
    StLOuG5sYXd1alxOB/nqoubam2BeVfb06xgVC7izp5eTiTk0KRcWFM3MyigiGEMkHcy0r7xENJd5da6Pi8CjoN7T0sY0Krg0LPXCv/zW1OgkHNQkHJsuK6Y4
    M2pHRoplZHZYV+ccHNskJDAJCagtK7o0NEATE6s8Og0MDPz09N3c3Pz8/PT09Ozs7NTU1GxsbAQEBP///yH5BAEAAP8ALAAAAAAgAyYBAAj/AP8JHEjwnzCD
    BRMePJiQICyEDQcujCjx30OKCC9ShOXM2UCNAh8e3MYPY8WSDUviK8kPZcGSr/6VJMUPls2LIiNenGjxps+MN3XGstnTp7OcIAsiPZjUosVYR33+7DnUYlSp
    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
    +tWwjrWsZ03rWtv61rjOta53zesLwyIgADs
    """
class Application_ui(Frame):
    #这个类仅实现界面生成功能，具体事件处理代码在子类Application中。
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master.title('白菜白光三线式调温电路设计软件 [cdhigh]')
        self.master.resizable(0,0)
        self.icondata = """
            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"""
        self.iconimg = PhotoImage(data=self.icondata)
        self.master.tk.call('wm', 'iconphoto', self.master._w, self.iconimg)
        # To center the window on the screen.
        ws = self.master.winfo_screenwidth()
        hs = self.master.winfo_screenheight()
        x = (ws / 2) - (828 / 2)
        y = (hs / 2) - (660 / 2)
        self.master.geometry('%dx%d+%d+%d' % (828,660,x,y))
        self.createWidgets()

    def createWidgets(self):
        self.top = self.winfo_toplevel()

        self.style = Style()

        self.frameDesgin = LabelFrame(self.top, text='参数设计')
        self.frameDesgin.place(relx=0.473, rely=0.473, relwidth=0.513, relheight=0.511)

        self.cavCurve = Canvas(self.top, takefocus=1)
        self.cavCurve.place(relx=0.01, rely=0.485, relwidth=0.455, relheight=0.498)

        self.cavSch = Canvas(self.top, takefocus=1)
        self.cavSch.place(relx=0.01, rely=0.012, relwidth=0.971, relheight=0.452)

        self.cmbSortPolicyList = ['综合排序（150-500度）','综合排序（200-400度）','综合排序（150-400度）','最优线性','最优温度范围',]
        self.cmbSortPolicyVar = StringVar(value='综合排序（150-500度）')
        self.cmbSortPolicy = Combobox(self.frameDesgin, state='readonly', text='综合排序（150-500度）', textvariable=self.cmbSortPolicyVar, values=self.cmbSortPolicyList)
        self.cmbSortPolicy.place(relx=0.64, rely=0.285, relwidth=0.322)
        self.cmbSortPolicy.bind('<<ComboboxSelected>>', self.cmbSortPolicy_ComboboxSelected)

        self.lstBestChoicesVar = StringVar(value='lstBestChoices')
        self.lstBestChoices = Listbox(self.frameDesgin, listvariable=self.lstBestChoicesVar)
        self.lstBestChoices.place(relx=0.64, rely=0.356, relwidth=0.322, relheight=0.617)
        self.lstBestChoices.bind('<Double-Button-1>', self.lstBestChoices_Double_Button_1)

        self.cmdBestChoices = Button(self.frameDesgin, text='为我推荐', command=self.cmdBestChoices_Cmd)
        self.cmdBestChoices.place(relx=0.64, rely=0.166, relwidth=0.322, relheight=0.098)

        self.cmbTempFormulaList = ['线性化计算','0.0157mV/℃',]
        self.cmbTempFormulaVar = StringVar(value='线性化计算')
        self.cmbTempFormula = Combobox(self.frameDesgin, state='readonly', text='线性化计算', textvariable=self.cmbTempFormulaVar, values=self.cmbTempFormulaList)
        self.cmbTempFormula.place(relx=0.376, rely=0.926, relwidth=0.209)

        self.txtMinVolVar = StringVar(value='')
        self.txtMinVol = Entry(self.frameDesgin, textvariable=self.txtMinVolVar)
        self.txtMinVol.place(relx=0.376, rely=0.535, relwidth=0.209, relheight=0.053)

        self.txtMaxVolVar = StringVar(value='')
        self.txtMaxVol = Entry(self.frameDesgin, textvariable=self.txtMaxVolVar)
        self.txtMaxVol.place(relx=0.376, rely=0.633, relwidth=0.209, relheight=0.053)

        self.cmdDrawCurve = Button(self.frameDesgin, text='绘制调温曲线', command=self.cmdDrawCurve_Cmd)
        self.cmdDrawCurve.place(relx=0.64, rely=0.047, relwidth=0.322, relheight=0.098)

        self.txtMaxTempVar = StringVar(value='')
        self.txtMaxTemp = Entry(self.frameDesgin, textvariable=self.txtMaxTempVar)
        self.txtMaxTemp.place(relx=0.376, rely=0.828, relwidth=0.209, relheight=0.053)

        self.txtMinTempVar = StringVar(value='')
        self.txtMinTemp = Entry(self.frameDesgin, textvariable=self.txtMinTempVar)
        self.txtMinTemp.place(relx=0.376, rely=0.73, relwidth=0.209, relheight=0.053)

        self.txtR10Var = StringVar(value='56k')
        self.txtR10 = Entry(self.frameDesgin, textvariable=self.txtR10Var)
        self.txtR10.place(relx=0.376, rely=0.438, relwidth=0.209, relheight=0.053)

        self.txtR9Var = StringVar(value='51')
        self.txtR9 = Entry(self.frameDesgin, textvariable=self.txtR9Var)
        self.txtR9.place(relx=0.376, rely=0.34, relwidth=0.209, relheight=0.053)

        self.txtR8Var = StringVar(value='43k')
        self.txtR8 = Entry(self.frameDesgin, textvariable=self.txtR8Var)
        self.txtR8.place(relx=0.376, rely=0.243, relwidth=0.209, relheight=0.053)

        self.txtRTVar = StringVar(value='10k')
        self.txtRT = Entry(self.frameDesgin, textvariable=self.txtRTVar)
        self.txtRT.place(relx=0.376, rely=0.145, relwidth=0.209, relheight=0.053)

        self.txtVCCVar = StringVar(value='5.0')
        self.txtVCC = Entry(self.frameDesgin, textvariable=self.txtVCCVar)
        self.txtVCC.place(relx=0.376, rely=0.047, relwidth=0.209, relheight=0.053)

        self.style.configure('TlblTempFormula.TLabel', anchor='e')
        self.lblTempFormula = Label(self.frameDesgin, text='温度计算公式', style='TlblTempFormula.TLabel')
        self.lblTempFormula.place(relx=0.038, rely=0.926, relwidth=0.304, relheight=0.05)

        self.style.configure('TlblMinVol.TLabel', anchor='e')
        self.lblMinVol = Label(self.frameDesgin, text='最小参考电压 (mV)', style='TlblMinVol.TLabel')
        self.lblMinVol.place(relx=0.038, rely=0.535, relwidth=0.304, relheight=0.05)

        self.style.configure('TlblMaxVol.TLabel', anchor='e')
        self.lblMaxVol = Label(self.frameDesgin, text='最大参考电压 (mV)', style='TlblMaxVol.TLabel')
        self.lblMaxVol.place(relx=0.038, rely=0.633, relwidth=0.304, relheight=0.05)

        self.style.configure('TlblMaxTemp.TLabel', anchor='e')
        self.lblMaxTemp = Label(self.frameDesgin, text='最高温度 (c)', style='TlblMaxTemp.TLabel')
        self.lblMaxTemp.place(relx=0.038, rely=0.828, relwidth=0.304, relheight=0.05)

        self.style.configure('TlblMinTemp.TLabel', anchor='e')
        self.lblMinTemp = Label(self.frameDesgin, text='最低温度 (c)', style='TlblMinTemp.TLabel')
        self.lblMinTemp.place(relx=0.038, rely=0.73, relwidth=0.304, relheight=0.05)

        self.style.configure('TlblR10.TLabel', anchor='e')
        self.lblR10 = Label(self.frameDesgin, text='电阻R10 (ohm)', style='TlblR10.TLabel')
        self.lblR10.place(relx=0.038, rely=0.438, relwidth=0.304, relheight=0.05)

        self.style.configure('TlblR9.TLabel', anchor='e')
        self.lblR9 = Label(self.frameDesgin, text='电阻R9 (ohm)', style='TlblR9.TLabel')
        self.lblR9.place(relx=0.038, rely=0.34, relwidth=0.304, relheight=0.05)

        self.style.configure('TlblR8.TLabel', anchor='e')
        self.lblR8 = Label(self.frameDesgin, text='电阻R8 (ohm)', style='TlblR8.TLabel')
        self.lblR8.place(relx=0.038, rely=0.243, relwidth=0.304, relheight=0.05)

        self.style.configure('TlblRT.TLabel', anchor='e')
        self.lblRT = Label(self.frameDesgin, text='电位器RT (ohm)', style='TlblRT.TLabel')
        self.lblRT.place(relx=0.038, rely=0.145, relwidth=0.304, relheight=0.05)

        self.style.configure('TlblVCC.TLabel', anchor='e')
        self.lblVCC = Label(self.frameDesgin, text='运放电压VCC (V)', style='TlblVCC.TLabel')
        self.lblVCC.place(relx=0.038, rely=0.047, relwidth=0.304, relheight=0.05)

class Application(Application_ui):
    #这个类实现具体的事件处理回调函数。界面生成代码在Application_ui中。
    def __init__(self, master=None):
        Application_ui.__init__(self, master)
        self.master.title('白菜白光三线式调温电路设计软件 v%s [cdhigh]' % __Version__)
        self.cmbTempFormula.current(0)
        self.schImg = PhotoImage(data=schData)
        self.cavSch.create_image(0,0, image=self.schImg, anchor=NW)
        self.lstBestChoicesVar.set('')
        self.cmbSortPolicy.current(0)
        self.bestChoices = None
        
    #根据各项参数设置，绘出调温曲线
    def cmdDrawCurve_Cmd(self, event=None):
        VCC, RT, R8, R9, R10 = self.GetVccAndResistors()
        if VCC < 0:
            showinfo('出错啦', '请先正确填写电压值。\n\n')
            self.txtVCC.focus_set()
            return
        if RT < 0:
            showinfo('出错啦', '请先正确填写电位器电阻RT值。\n\n')
            self.txtRT.focus_set()
            return
        if R8 < 0:
            showinfo('出错啦', '请先正确填写电位器中点电阻R8值。\n\n')
            self.txtR8.focus_set()
            return
        if R9 < 0:
            showinfo('出错啦', '请先正确填写下分压电阻R9值。\n\n')
            self.txtR9.focus_set()
            return
        if R10 < 0:
            showinfo('出错啦', '请先正确上分压电阻R10值。\n\n')
            self.txtR10.focus_set()
            return
        
        vrefList = CalVrefList(VCC, RT, R8, R9, R10)
        maxVref = max(vrefList)
        if maxVref >= 0.047533:
            showinfo('出错啦', '你设置的参数可能有误，计算出的最高温度已经超过热电偶的最大工作温度！')
        
        if self.cmbTempFormula.current() == 0:
            t12TempList = list(map(N_VtoT, vrefList))
        else:
            t12TempList = list(map(N_VtoT_Linear, vrefList))
        self.txtMinVolVar.set('%0.1f' % (min(vrefList) * 1000))
        self.txtMaxVolVar.set('%0.1f' % (maxVref * 1000))
        self.txtMinTempVar.set(str(int(min(t12TempList))))
        self.txtMaxTempVar.set(str(int(max(t12TempList))))
        self.DrawCurveInCanvas(t12TempList)
    
    #根据一些给定的数值计算出其他的优选组合
    def cmdBestChoices_Cmd(self, event=None):
        VCC, RT, R8, R9, R10 = self.GetVccAndResistors()
        if VCC < 0:
            showinfo('出错啦', '请至少正确提供运放电源电压和电位器阻值。\n\n')
            self.txtVCC.focus_set()
            return
        if RT < 0:
            showinfo('出错啦', '请至少正确提供运放电源电压和电位器阻值。\n\n')
            self.txtRT.focus_set()
            return
            
        try:
            minTemp = float(self.txtMinTempVar.get().strip())
        except:
            try: #如果没有提供最低温度，而提供了最小电压，则通过电压反推温度
                minVol = float(self.txtMinVolVar.get().strip())
            except:
                minTemp = -1.0
            else:
                if self.cmbTempFormula.current() == 0:
                    minTemp = N_VtoT(minVol/1000)
                else:
                    minTemp = N_VtoT_Linear(minVol/1000)
        else:
            minTemp = -1.0
        try:
            maxTemp = float(self.txtMaxTempVar.get().strip())
        except:
            try: #如果没有提供最高温度，而提供了最高电压，则通过电压反推温度
                maxVol = float(self.txtMaxVolVar.get().strip())
            except:
                maxTemp = -1.0
            else:
                if self.cmbTempFormula.current() == 0:
                    maxTemp = N_VtoT(maxVol/1000)
                else:
                    maxTemp = N_VtoT_Linear(maxVol/1000)
        else:
            maxTemp = -1.0
        
        if -1.0 not in (R8, R9, R10):
            showinfo('友情提示', '你已经提供了所有的参数，我无法向你推荐其他组合。'
                '\n\n如果你需要我为你服务，请删掉一些参数再试试？'
                '\n\n除电源电压和电位器阻值必须提供外'
                '\n其他的参数（电阻、温度、参考电压）你可以任意选择留空或提供。'
                '\n\n你提供的任何一项参数都将做为一个额外的计算约束。')
            return
            
        self.bestChoices = BestChoices(VCC, RT, R8, R9, R10, minTemp, maxTemp)
        
        #更新列表框内容
        self.UpdateChoicesListBox(self.bestChoices)
    
    #返回界面上设置的电压和各电阻值，返回元祖 (VCC, RT, R8, R9, R10)，获取不到值则为-1
    def GetVccAndResistors(self):
        try:
            VCC = float(self.txtVCCVar.get().strip())
        except:
            VCC = -1.0
        tRT = self.txtRTVar.get().strip()
        try:
            RT = float(tRT[:-1]) * 1000 if tRT[-1].lower() == 'k' else float(tRT)
        except:
            RT = -1.0
        tR8 = self.txtR8Var.get().strip()
        try:
            R8 = float(tR8[:-1]) * 1000 if tR8[-1].lower() == 'k' else float(tR8)
        except:
            R8 = -1.0
        tR9 = self.txtR9Var.get().strip()
        try:
            R9 = float(tR9[:-1]) * 1000 if tR9[-1].lower() == 'k' else float(tR9)
        except:
            R9 = -1.0
        tR10 = self.txtR10Var.get().strip()
        try:
            R10 = float(tR10[:-1]) * 1000 if tR10[-1].lower() == 'k' else float(tR10)
        except:
            R10 = -1.0
        
        return VCC, RT, R8, R9, R10
        
    #根据用户选择的排序策略排序推荐组合，并更新到列表框
    def UpdateChoicesListBox(self, bestChoices):
        if not bestChoices:
            self.lstBestChoicesVar.set('')
            return
            
        SORT_AUTO_1 = 0
        SORT_AUTO_2 = 1
        SORT_AUTO_3 = 2
        SORT_LINEAR = 3
        SORT_TEMP = 4
        sortPolicy = self.cmbSortPolicy.current()
        if sortPolicy < 0 or sortPolicy > 4:
            sortPolicy = 0
        
        if sortPolicy in (SORT_AUTO_1, SORT_AUTO_2, SORT_AUTO_3):
            #先抽取最低温度最高温度范围合理的组合
            if sortPolicy == SORT_AUTO_1:
                choices2 = [x for x in bestChoices if x[5][0] > 150 and x[5][-1] < 500]
            elif sortPolicy == SORT_AUTO_2:
                choices2 = [x for x in bestChoices if x[5][0] > 200 and x[5][-1] < 400]
            else:
                choices2 = [x for x in bestChoices if x[5][0] > 150 and x[5][-1] < 400]
            
            if not choices2:
                self.lstBestChoicesVar.set('')
                return
                
            #在根据所有的线性范围确定一定的可选线性范围
            allLinear = [x[6] for x in choices2]
            numChoices = len(allLinear)
            minLinear = min(allLinear)
            maxLinear = max(allLinear)
            linearThreshold = 5
            if numChoices > 1000:
                linearThreshold = 1
            elif numChoices > 500:
                linearThreshold = 2
            elif numChoices > 100:
                linearThreshold = 3
            elif numChoices > 50:
                linearThreshold = 10
            choices1 = [x for x in choices2 if x[6] < linearThreshold]
            
            #然后再根据温度范围倒序排序
            choices1.sort(key=lambda x: x[5][-1] - x[5][0], reverse=True)
        elif sortPolicy == SORT_LINEAR:
            choices1 = sorted(bestChoices, key=lambda x:x[6])
        else:
            choices1 = sorted(bestChoices, key=lambda x:x[5][-1] - x[5][0], reverse=True)
            
        #构建带空格的字符串，用于填充列表框
        slChoices = []
        for VCC, tRT, tR8, tR9, tR10, tempList, diffLinear in choices1[:30]:
            RT = ('%.1f' % tRT).strip()
            if RT.endswith('000.0'):
                RT = RT[:-5] + 'k'
            elif RT.endswith('.0'):
                RT = RT[:-2]
            R8 = ('%.1f' % tR8).strip()
            if R8.endswith('000.0'):
                R8 = R8[:-5] + 'k'
            elif R8.endswith('.0'):
                R8 = R8[:-2]
            R9 = ('%.1f' % tR9).strip()
            if R9.endswith('000.0'):
                R9 = R9[:-5] + 'k'
            elif R9.endswith('.0'):
                R9 = R9[:-2]
            R10 = ('%.1f' % tR10).strip()
            if R10.endswith('000.0'):
                R10 = R10[:-5] + 'k'
            elif R10.endswith('.0'):
                R10 = R10[:-2]
            slChoices.append('%s,%s,%s,%d,%d,%d,%s' % 
                (R8, R9, R10, tempList[0], tempList[-1], VCC, RT))
        self.lstBestChoicesVar.set(' '.join(slChoices))
    
    def cmbSortPolicy_ComboboxSelected(self, event):
        self.UpdateChoicesListBox(self.bestChoices)
        
    def lstBestChoices_Double_Button_1(self, event):
        itemIndex = self.lstBestChoices.nearest(event.y)
        if ((self.lstBestChoices.size() > 0) and 
            (0 <= itemIndex < self.lstBestChoices.size())):
            itemToDisplay = self.lstBestChoices.get(itemIndex)
        else:
            return
            
        props = itemToDisplay.split(',')
        self.txtR8Var.set(props[0])
        self.txtR9Var.set(props[1])
        self.txtR10Var.set(props[2])
        self.txtVCCVar.set(props[5])
        self.txtRTVar.set(props[6])
        self.cmdDrawCurve_Cmd()
        
    #在Canvas上画出电压和电位器旋转角度的函数曲线图
    #传入参数中的列表为按照一定固定步进的从小到大的温度值
    def DrawCurveInCanvas(self, t12TempList):
        #有很多数字用了浮点是为了兼容PYTHON2.X/3.X，因为这两个大版本对整数运算阐述的浮点结果处理有些差异
        TextMargin = 10.0 #坐标文字离边缘距离
        MarginX = 20.0 #X坐标轴离canvas边缘像素距离
        MarginY = 40.0 #Y坐标轴离canvas边缘像素距离
        
        cav = self.cavCurve
        cav.delete('all')
        cavW = int(cav.winfo_width())
        cavH = int(cav.winfo_height())
        
        minTemp = min(t12TempList)
        maxTemp = max(t12TempList)
        
        #先画X/Y坐标轴
        orgX = MarginY
        orgY = cavH - MarginX
        YAxisLength = cavH - TextMargin - MarginX
        XAxisLength = cavW - TextMargin - MarginY
        cav.create_rectangle(orgX, TextMargin, cavW - TextMargin, orgY, outline='gray')
        
        #画坐标刻度
        #温度刻度间隔为50度，初始温度设定为最低温度下取整为一百度的值
        #最高温度刻度设定为最大温度上取整为一百度的值
        tempStart = int(minTemp / 100) * 100
        tempEnd = (int(maxTemp / 100) + 1) * 100
        tempPixelsStep = float(YAxisLength) / ((tempEnd - tempStart) / 50)
        pixelsPerDegree = float(YAxisLength) / (tempEnd - tempStart)
        tempRulerY = orgY
        for tmp in range(tempStart, tempEnd + 49, 50):
            cav.create_line(orgX, tempRulerY, orgX + XAxisLength, tempRulerY, fill='gray', dash=(2,5))
            cav.create_text(TextMargin, tempRulerY, text=str(int(tmp)), anchor=W)
            tempRulerY -= tempPixelsStep
        
        #角度刻度固定为10分度，每个刻度为0.1步进
        anglePixelsStep = XAxisLength / 10
        angleRulerX = orgX
        for angle in ('0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1.0'):
            cav.create_line(angleRulerX, orgY, angleRulerX, orgY - YAxisLength, fill='gray', dash=(2,5))
            cav.create_text(angleRulerX, cavH - TextMargin, text=angle, anchor=CENTER)
            angleRulerX += anglePixelsStep
        
        #内嵌函数，给定一个温度（在合法区间内），返回对应的Y轴坐标位置
        def tempY(temp):
            return orgY - (temp - tempStart) * pixelsPerDegree
        
        #内嵌函数，给定一个电位器旋转角度（0.0~1.0浮点），返回对应的X轴坐标位置
        def angleX(angle):
            return orgX + angle * XAxisLength
        
        #画一条理想调温直线，连接开始温度和结束温度
        cav.create_line(orgX, tempY(minTemp), angleX(1), tempY(maxTemp), fill='red')
        
        #开始画实际的调温曲线
        step = (100 / float(len(t12TempList))) / 100
        angle = 0.0
        prevX = orgX
        prevY = tempY(minTemp)
        for temp in t12TempList:
            currX = angleX(angle)
            currY = tempY(temp)
            cav.create_line(prevX, prevY, currX, currY)
            angle += step
            prevX = currX
            prevY = currY
        
        #最后一段
        cav.create_line(prevX, prevY, angleX(1), tempY(maxTemp))
        
if __name__ == "__main__":
    top = Tk()
    Application(top).mainloop()
    
